package controllers

import (
	beego "github.com/beego/beego/v2/server/web"
)

// ResAPI ...
type ResAPI struct {
	Success int         `json:"success"`
	Msg     string      `json:"msg"`
	Result  interface{} `json:"result"`
}

// MainController ...
type MainController struct {
	beego.Controller
}

// LoginController ...
type LoginController struct {
	beego.Controller
}

// APIReturn ...
func (c *MainController) APIReturn(Success int, Msg string, data interface{}) {
	res := new(ResAPI)
	//如果不是200正常响应，且没有给出返回值的话，直接return跳出当前方法
	//也就是说 非正常响应，必须给出返回值data
	if Success != 200 && data == nil {
		return
	}
	res.Success = Success
	res.Msg = Msg
	// 如果断言初data是一个error，则友好返回error的string形式
	err, ok := data.(error)
	if ok {
		data = err.Error()
	}
	res.Result = data
	c.Data["json"] = res
	// 把响应码写入到请求头中，这行如果加上，假如是500这种出错码，会导致浏览器自动帮我们解析数据，
	// 不会帮我们展示出我们要返回的合理的error信息
	//c.Ctx.ResponseWriter.WriteHeader(Success)
	c.ServeJSON()
	c.StopRun()
}

// APIReturn ...
//func (c *LoginController) APIReturn(Success int, Msg string, data interface{}) {
//	res := new(ResAPI)
//	if Success != 200 && data == nil {
//		return
//	}
//	res.Result = data
//	res.Success = Success
//	res.Msg = Msg
//	c.Data["json"] = res
//	c.Ctx.ResponseWriter.WriteHeader(Success)
//	c.ServeJSON()
//	c.StopRun()
//}
